package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.IHasServiceRelatedProducts;
import com.shrct.businessprocess.customerservice.RCContractInstallInfo;
import com.shrct.businessprocess.customerservice.RCRequireStatus;
import com.shrct.businessprocess.customerservice.RCRoutineService;
import com.shrct.businessprocess.customerservice.RCRoutineServiceInfo;
import com.shrct.businessprocess.customerservice.RCServiceContractDelegateStatus;
import com.shrct.businessprocess.customerservice.impl.RCServiceContractDelegateImpl;
import com.shrct.businessprocess.customerservice.proxy.RCServiceContractDelegateProxy;
import com.shrct.businessprocess.organization.RCEmployee;
import com.shrct.businessprocess.organization.RCEnterprise;
import com.shrct.businessprocess.product.RCLogicProduct;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import java.util.Collection;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCServiceContractDelegateImpl.class)
public interface RCServiceContractDelegate extends IModelObject, INamedModelObject, IHasServiceRelatedProducts {
  public abstract String getProjectId();
  
  public abstract RCServiceContractDelegate setProjectId(final String projectId);
  
  public abstract String getProjectName();
  
  public abstract RCServiceContractDelegate setProjectName(final String projectName);
  
  public abstract String getContractId();
  
  public abstract RCServiceContractDelegate setContractId(final String contractId);
  
  public abstract String getCustomerLink();
  
  public abstract RCServiceContractDelegate setCustomerLink(final String customerLink);
  
  public abstract String getCustomerLinkPhone();
  
  public abstract RCServiceContractDelegate setCustomerLinkPhone(final String customerLinkPhone);
  
  public abstract String getCustomerLinkMail();
  
  public abstract RCServiceContractDelegate setCustomerLinkMail(final String customerLinkMail);
  
  public abstract String getComment();
  
  public abstract RCServiceContractDelegate setComment(final String comment);
  
  public abstract RCEnterprise getCustomer();
  
  public abstract RCServiceContractDelegate setCustomer(final RCEnterprise customer);
  
  public abstract RCEmployee getBusinessMan();
  
  public abstract RCServiceContractDelegate setBusinessMan(final RCEmployee businessMan);
  
  public abstract RCEmployee getMajorSales();
  
  public abstract RCServiceContractDelegate setMajorSales(final RCEmployee majorSales);
  
  public abstract RCContractInstallInfo getInstallInfo();
  
  public abstract RCServiceContractDelegate setInstallInfo(final RCContractInstallInfo installInfo);
  
  public abstract RCRoutineServiceInfo getRoutineServiceInfo();
  
  public abstract RCServiceContractDelegate setRoutineServiceInfo(final RCRoutineServiceInfo routineServiceInfo);
  
  public abstract String getEntityName();
  
  public abstract Collection<RCRoutineService> getServiceContracts();
  
  public abstract Boolean isReady4RoutineService();
  
  public abstract Collection<RCLogicProduct> getShippingList();
  
  public abstract Collection<RCLogicProduct> getUngroupedShippingList();
  
  public abstract Iterable<RCLogicProduct> getRelatedProducts();
  
  public abstract RCServiceContractDelegateStatus getStatus();
  
  public abstract void start();
  
  public abstract void update(final Procedure1<? super RCServiceContractDelegate> preInit);
  
  public abstract void setInstallRequirement(final RCRequireStatus req);
  
  public abstract void setRoutineServiceRequirement(final RCRequireStatus req);
  
  public abstract Boolean isInitialized();
  
  public abstract RCServiceContractDelegateProxy toProxy();
}
